home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh8x / sh83a.d64 / ultramenue maker (.txt) < prev    next >
Encoding:
Commodore BASIC  |  1995-03-30  |  9.1 KB  |  232 lines

  1. 1000 REM ***
  2. 1010 REM *** ULTRABOOT MENUE MAKER ***
  3. 1020 REM *** 1992 MARTIN PFOST
  4. 1030 REM *** (C) 1992 HEUREKA SOFTWARE
  5. 1040 REM ***
  6. 1050 POKE 53280,14:POKE 53281,14
  7. 1060 POKE 56,49:POKE 55,255:CLR
  8. 1070 PRINT "[147]     *** [213]LTRABOOT [205]ENUE [205]AKER ***"
  9. 1080 PRINT "*  1992 [205]ARTIN [208]FOST"
  10. 1090 PRINT "* (C) 1992 [200]EUREKA [212]EACHWARE"
  11. 1100 PRINT " *** MAXIMALE [194]LOCKANZAHL : 104"
  12. 1110 PRINT "[213]LTRABOOT [205]ENUE [205]AKER ERSTELLT AUF"
  13. 1120 PRINT "[196]ISKETTE EIN [198]ILE, DAS MIT DEM MODIFI-"
  14. 1130 PRINT "ZIERTEN [213]LTRABOOT [205]AKER AUF DIE [218]IEL-"
  15. 1140 PRINT "DISKETTE ZU SCHREIBEN IST ."
  16. 1150 PRINT " *** [196]IE [204]OAD,[211]AVE,[196]IR-[210]OUTINEN WERDEN"
  17. 1160 PRINT "     GELESEN ."
  18. 1170 C=0:FOR I=52992 TO 53109:READ D:POKE I,D:C=C+D:NEXT:IF C=18731 THEN 1190
  19. 1180 PRINT "??? [198]EHLER IN [196]ATA-[218]EILEN !":STOP
  20. 1190 PRINT " *** [196]IE [213]LTRABOOT-[205]ENUE-[196]ATEN WERDEN"
  21. 1200 PRINT "     GELESEN ."
  22. 1210 C=0:FOR I=12800 TO 13506:READ D:POKE I,D:C=C+D:NEXT:IF C<>70818 THEN 1180
  23. 1220 REM *** EINGABE DER FILENAMEN
  24. 1230 CLR:AD=13507:DIM M%(5,20),ZT%(9,9),SB(9),SA%(9,9),N$(9)
  25. 1240 PRINT "[147] *** [199]EBEN [211]IE JETZT DIE ENTSPRECHEN-"
  26. 1250 PRINT "     [198]ILES EIN ! ($=[196]IR. [210]ET=[197]NDE)"
  27. 1260 PRINT "==> [198]ILENAME [206]R.";FZ+1;" ";:A$="":INPUT A$
  28. 1270 IF A$="$" THEN OPEN 1,8,0,A$:SYS 52992:CLOSE 1:GOSUB2730:GOTO 1240
  29. 1280 IF A$="" AND FZ=0 THEN END
  30. 1290 IF A$="" THEN 1320
  31. 1300 FZ=FZ+1:N$(FZ)=A$:IF FZ<9 THEN 1260
  32. 1310 REM *** KONTROLLE DER FILENAMEN
  33. 1320 PRINT "[147]":GOSUB 2700
  34. 1330 INPUT "==> [207]K (J/N) ";A$:IF A$<>"J" THEN 1230
  35. 1340 PRINT "[147] *** [199]EBEN [211]IE JETZT EIN, WIE DIE [198]ILES"
  36. 1350 PRINT "     GESTARTET WERDEN ."
  37. 1360 PRINT "       S : [211]YS"
  38. 1370 PRINT "       R : [210]UN"
  39. 1380 PRINT "       T : [212]OOL-[198]ILE"
  40. 1390 FOR I=1 TO FZ
  41. 1400 PRINT "[198]ILE";I;" : ";N$(I):INPUT "==> [211]TARTBEFEHL (S/R/T) ";A$
  42. 1410 SB(I)=680:IF A$="S" THEN INPUT "==> [193]DRESSE ";SB(I)
  43. 1420 IF A$="T" THEN SB(I)=168
  44. 1430 NEXT I
  45. 1440 PRINT "[147]":FOR I=1 TO FZ
  46. 1450 PRINT "[198]ILE";I;" : ";N$(I);TAB(28);
  47. 1460 IF SB(I)=680 THEN PRINT "[210]UN":GOTO 1490
  48. 1470 IF SB(I)=168 THEN PRINT "[212]OOL-[198]ILE":GOTO 1490
  49. 1480 PRINT "[211]YS";SB(I)
  50. 1490 NEXT I
  51. 1500 INPUT "==> [207]K (J/N) ";A$:IF A$<>"J" THEN 1340
  52. 1510 REM *** EINGABE DER SAETZE
  53. 1520 SZ=0
  54. 1530 PRINT "[147] *** [199]EBEN [211]IE JETZT EIN, WELCHES [198]ILE"
  55. 1540 PRINT "     ENTHALTEN SEIN SOLL ! ([210]ET=[197]NDE)"
  56. 1550 PRINT "     [211]ATZ :";SZ+1;"":GOSUB 2700:I=0
  57. 1560 PRINT "==>";I+1;". [206]UMMER ";:A$="":INPUT A$
  58. 1570 IF A$="" THEN 1600
  59. 1580 IF VAL(A$)=0 OR VAL(A$)>FZ THEN PRINT "[145]";:GOTO 1560
  60. 1590 I=I+1:ZT%(SZ+1,I)=VAL(A$):IF I<9 THEN 1560
  61. 1600 INPUT "==> [207]K (J/N) ";A$:IF A$<>"J" THEN 1530
  62. 1610 ZT%(SZ+1,0)=I:IF I<>0 THEN SZ=SZ+1:IF SZ<9 THEN 1530
  63. 1620 REM *** AUTOSTARTABFRAGE
  64. 1630 I=1
  65. 1640 IF I>SZ THEN 1720
  66. 1650 PRINT "[147]*** [199]EBEN [211]IE JETZT EIN, OB EIN [198]ILE"
  67. 1660 PRINT "    AUTOMATISCH GESTARTET WERDEN SOLL !"
  68. 1670 PRINT "[211]ATZ :";I;""
  69. 1680 FOR J=1 TO ZT%(I,0):PRINT J;". [198]ILE : ";N$(ZT%(I,J))
  70. 1690 S=0:INPUT "==> [193]UTOSTART (J/N) ";A$:IF A$="J" THEN S=1
  71. 1700 SA%(I,J)=S:NEXT J:I=I+1:GOTO 1640
  72. 1710 REM *** SATZKONTROLLE
  73. 1720 C=32
  74. 1730 GOSUB 2840:PRINT:I=1
  75. 1740 IF I>SZ THEN 1830
  76. 1750 PRINT "";RIGHT$(STR$(I),1);"[146] ";:S=2
  77. 1760 FOR J=1 TO ZT%(I,0)
  78. 1770 D=LEN(N$(ZT%(I,J)))+1
  79. 1780 IF S+D>38 THEN PRINT:PRINT "  ";:S=2
  80. 1790 IF SA%(I,J) THEN PRINT "";
  81. 1800 PRINT N$(ZT%(I,J));"[146] ";:S=S+D
  82. 1810 NEXT J:PRINT:IF C=32 THEN PRINT
  83. 1820 I=I+1:GOTO 1740
  84. 1830 IF PEEK(214)<23 THEN 1850
  85. 1840 IF C=32 THEN C=44:GOTO 1730
  86. 1850 POKE 13041,C:GOSUB 2730:GOSUB 2840
  87. 1860 FOR I=1 TO FZ:PRINT "";RIGHT$(STR$(I),1);"[146] ";N$(I):NEXT I
  88. 1870 INPUT "==> [193]LLES [207]K (J/N) ";A$:IF A$<>"J" THEN 1230
  89. 1880 REM *** ULTRAMENUE GENERIEREN
  90. 1890 PRINT "[147] *** [213]LTRAMENUE WIRD ERZEUGT ."
  91. 1900 OF=12800-2049:FOR I=1 TO FZ:FOR J=1 TO LEN(N$(I))
  92. 1910 POKE AD,ASC(MID$(N$(I),J,1)):AD=AD+1:NEXT J:POKE AD,0:AD=AD+1:NEXT I
  93. 1920 E1=AD-OF:FOR I=1 TO FZ:POKE AD,LEN(N$(I))+1:AD=AD+1:NEXT I
  94. 1930 POKE AD,0:AD=AD+1:E2=AD-OF:S=-1:N$(0)=""
  95. 1940 FOR I=0 TO FZ-1:S=S+LEN(N$(I))+1:POKE AD,S:AD=AD+1:NEXT I
  96. 1950 E3=AD-OF:I=1
  97. 1960 IF I>SZ THEN 2020
  98. 1970 FOR J=1 TO ZT%(I,0):E=ZT%(I,J)
  99. 1980 IF SA%(I,J) THEN E=E+16
  100. 1990 IF J=ZT%(I,0) THEN E=E+128
  101. 2000 POKE AD,E:AD=AD+1:NEXT J
  102. 2010 I=I+1:GOTO 1960
  103. 2020 POKE AD,0:AD=AD+1:E4=AD-OF
  104. 2030 S=0:I=0:ZT%(0,0)=0
  105. 2040 IF I=SZ THEN 2060
  106. 2050 S=S+ZT%(I,0):POKE AD,S:AD=AD+1:I=I+1:GOTO 2040
  107. 2060 E5=AD-OF:FOR I=1 TO FZ
  108. 2070 POKE AD+FZ*2+I-1,SB(I)-256*INT(SB(I)/256):POKE AD+FZ*3+I-1,INT(SB(I)/256)
  109. 2080 NEXT I:AD=AD+6*FZ
  110. 2090 POKE 12825,E3-256*INT(E3/256):POKE 12826,INT(E3/256)
  111. 2100 POKE 12842,PEEK(12825):POKE 12843,PEEK(12826)
  112. 2110 POKE 12858,E4-256*INT((E4-1)/256)-1:POKE 12859,INT((E4-1)/256)
  113. 2120 POKE 12865,E3-256*INT((E3-1)/256)-1:POKE 12866,INT((E3-1)/256)
  114. 2130 POKE 12947,E1-1-256*INT((E1-1)/256):POKE 12948,INT((E1-1)/256)
  115. 2140 POKE 13142,PEEK(12947):POKE 13143,PEEK(12948)
  116. 2150 POKE 13164,E2-1-256*INT((E2-1)/256):POKE 13165,INT((E2-1)/256):E4=88-6*FZ
  117. 2160 POKE 13219,E4:POKE 13224,E4+FZ:FOR I=2 TO 5:POKE 13217+6*I,I*FZ+E4:NEXT
  118. 2170 POKE 13477,6*FZ-1:POKE 13478,E5-256*INT(E5/256):POKE 13479,INT(E5/256)
  119. 2180 POKE 13480,E4+1
  120. 2190 REM *** FILES LESEN
  121. 2200 OPEN 15,8,15
  122. 2210 PRINT " *** [196]IE [198]ILES WERDEN GELESEN ."
  123. 2220 LE(0)=AD-12800:GOSUB 2810:BL(0)=BZ
  124. 2230 FOR I=1 TO FZ:PRINT "  [198]ILE";I;": ";N$(I):GOSUB 2720
  125. 2240 OPEN 1,8,0,N$(I):GOSUB 2760:IF E THEN CLOSE 1:GOTO 2240
  126. 2250 GET#1,A$:IF A$="" THEN A$=CHR$(0)
  127. 2260 POKE E5+OF+I-1,ASC(A$)
  128. 2270 GET#1,A$:IF A$="" THEN A$=CHR$(0)
  129. 2280 POKE E5+OF+FZ+I-1,ASC(A$)
  130. 2290 POKE 174,AD-256*INT(AD/256):POKE 175,INT(AD/256):E1=AD:E2=BZ
  131. 2300 SYS 53048:CLOSE 1:AD=PEEK(174)+256*PEEK(175)
  132. 2310 LE(I)=AD-E1:E1=AD:GOSUB 2810:BL(I)=BZ-E2
  133. 2320 IF BZ>104 THEN PRINT "??? [218]U VIELE [194]LOECKE !":STOP
  134. 2330 NEXT I
  135. 2340 REM *** BLOECKE BERECHNEN
  136. 2350 PRINT " *** [194]ERECHNUNG DER [194]LOECKE"
  137. 2360 SD=5:GS=17
  138. 2370 IF BZ>84 THEN GS=18:SD=5
  139. 2380 IF BZ>89 THEN GS=19:SD=5
  140. 2390 IF BZ>94 THEN GS=21:SD=6
  141. 2400 T=36:S=SD+1:M%(1,0)=1:M%(1,SD+1)=1
  142. 2410 FOR I=0 TO FZ-1:FOR J=1 TO BL(I)
  143. 2420 S=S+SD:C=GS
  144. 2430 S=S+1:IF S>=GS THEN S=S-GS
  145. 2440 IF M%(T-35,S)=0 THEN 2470
  146. 2450 C=C-1:IF C>0 THEN 2430
  147. 2460 T=T+1:GOTO 2440
  148. 2470 M%(T-35,S)=1:NEXT J
  149. 2480 POKE E5+OF+4*FZ+I,T:POKE E5+OF+5*FZ+I,S:NEXT I
  150. 2490 REM *** DATENFILE ERZEUGEN
  151. 2500 PRINT " *** [213]LTRABOOT [205]ENUE SCHREIBEN"
  152. 2510 PRINT "==> [199]EBEN [211]IE JETZT DEN [206]AMEN EIN !":INPUT "    [206]AME ";B$
  153. 2520 GOSUB 2720:PRINT " *** [196]AS [196]ATENFILE WIRD ERZEUGT ."
  154. 2530 OPEN 2,8,2,B$+"+,S,W":GOSUB 2760:IF E THEN CLOSE 2:GOTO 2530
  155. 2540 S=0:FOR I=0 TO FZ-1
  156. 2550 S=S+BL(I):PRINT#2,S:PRINT#2,ABS(LE(I)-1-254*INT(LE(I)/254)):NEXT I
  157. 2560 PRINT#2,999:PRINT#2,0:CLOSE 2
  158. 2570 REM *** ULTRAMENUE SCHREIBEN
  159. 2580 PRINT " *** [213]LTRABOOT [205]ENUE WIRD GESCHRIEBEN ."
  160. 2590 OPEN 1,8,1,B$:GOSUB 2760:IF E THEN CLOSE 1:GOTO 2590
  161. 2600 PRINT#1,CHR$(1)+CHR$(8);
  162. 2610 POKE 174,0:POKE 175,50:POKE 172,E1-256*INT(E1/256):POKE 173,INT(E1/256)
  163. 2620 SYS 53073:CLOSE 1:CLOSE 15
  164. 2630 PRINT "'";B$;"' STEHT AUF DER [196]ISKETTE ."
  165. 2640 PRINT "[197]S MUSS JETZT MIT DEM MODIFIZIERTEN"
  166. 2650 PRINT "[213]LTRABOOT [205]AKER AUF DIE [218]IELDISKETTE"
  167. 2660 PRINT "GESCHRIEBEN WERDEN ."
  168. 2670 INPUT "==> [206]OCH EIN [213]LTRAMENUE-[198]ILE (J/N) ";A$:IF A$="J" THEN 1230
  169. 2680 END
  170. 2690 REM *** AUSGABE DER FILENAMEN
  171. 2700 PRINT "[198]ILES :"
  172. 2710 FOR I=1 TO FZ:PRINT "[198]ILE [206]R.";I;" : ";N$(I):NEXT I:PRINT:RETURN
  173. 2720 PRINT "==> ENTSPRECHENDE [196]ISKETTE EINLEGEN !"
  174. 2730 GET A$:IF A$="" THEN 2730
  175. 2740 RETURN
  176. 2750 REM *** DISKSTATUS TESTEN
  177. 2760 INPUT#15,E,E$,ET,ES:IF E=0 THEN RETURN
  178. 2770 PRINT "??? [196]ISK-[198]EHLER !":PRINT E;E$;ET;ES
  179. 2780 INPUT "==> [206]OCH EINMAL VERSUCHEN (J/N) ";A$:IF A$="J" THEN RETURN
  180. 2790 STOP
  181. 2800 REM *** AD AUF NAECHSTEN BLOCK
  182. 2810 BY=(AD-12800)-254*INT((AD-12800)/254):IF BY<>0 THEN AD=AD+254-BY
  183. 2820 BZ=INT((AD-12800)/254):RETURN
  184. 2830 REM *** KOPFZEILE SCHREIBEN
  185. 2840 PRINT "[147]*** [213]LTRABOOT [205]ENUE ***   [205]ARTIN [208]FOST"
  186. 2850 PRINT "      (C) 1992 [200]EUREKA [212]EACHWARE":PRINT "0[146] [198]ILE [211]ELECT":RETURN
  187. 2860 REM *** LOADSAVEDIRROUTINEN
  188. 2870 DATA162,1,32,198,255,32,207,255,32,207,255,169,13,32,210,255,32,207,255
  189. 2880 DATA133,255,32,207,255,5,255,208,3,76,204,255,32,207,255,170,32,207,255
  190. 2890 DATA32,205,189,169,32,32,210,255,32,207,255,240,216,32,210,255,144,246
  191. 2900 DATA162,1,32,198,255,160,0,32,207,255,145,174,230,174,208,2,230,175,166
  192. 2910 DATA144,240,241,76,204,255,198,1,162,1,32,201,255,160,0,177,174,32,210
  193. 2920 DATA255,230,174,208,2,230,175,165,174,197,172,208,239,165,175,197,173
  194. 2930 DATA208,233,230,1,76,204,255
  195. 2940 REM *** ULTRAMENUE
  196. 2950 DATA12,8,194,7,158,32,50,48,54,50,0,0,0,169,14,141,32,208,141,33,208
  197. 2960 DATA32,230,8,188,3,11,240,18,32,242,8,152,72,32,75,9,232,104,48,239,188
  198. 2970 DATA3,11,76,33,8,32,23,9,176,55,240,75,41,15,168,190,11,11,160,255,232
  199. 2980 DATA200,189,2,11,153,247,2,16,246,32,19,9,162,29,160,4,189,166,10,153
  200. 2990 DATA167,0,202,136,16,246,168,177,168,145,170,136,16,249,138,16,233,76
  201. 3000 DATA75,3,88,76,176,2,76,19,9,166,168,240,249,32,222,8,166,168,189,246
  202. 3010 DATA2,9,128,157,246,2,48,199,32,230,8,134,168,232,32,245,8,138,168,169
  203. 3020 DATA0,32,82,9,232,189,247,10,208,240,32,15,9,56,32,240,255,134,170,132
  204. 3030 DATA171,166,170,164,171,24,32,240,255,32,23,9,176,191,240,208,72,32,19
  205. 3040 DATA9,32,19,9,32,10,9,104,166,168,224,9,176,224,232,157,246,2,134,168
  206. 3050 DATA72,202,240,3,32,222,8,104,32,75,9,56,32,240,255,134,172,132,173,16
  207. 3060 DATA197,166,172,164,173,24,76,240,255,169,52,160,10,32,30,171,162,0,134
  208. 3070 DATA167,96,32,15,9,32,15,9,230,167,165,167,9,48,133,199,32,210,255,169
  209. 3080 DATA0,133,199,96,230,169,169,32,76,210,255,169,0,133,169,169,13,208,245
  210. 3090 DATA169,151,160,10,32,30,171,32,228,255,133,204,201,13,240,23,201,33
  211. 3100 DATA144,243,201,58,176,239,168,41,15,197,167,240,2,176,230,152,41,31
  212. 3110 DATA73,16,24,170,160,0,132,207,164,211,169,32,145,209,138,96,72,41,15
  213. 3120 DATA168,104,41,16,72,32,8,9,185,247,10,101,169,133,169,201,39,144,8,32
  214. 3130 DATA15,9,32,8,9,144,234,104,133,199,185,253,10,168,185,196,10,240,6,32
  215. 3140 DATA210,255,200,208,245,76,3,9,77,45,69,5,2,169,0,141,255,3,169,0,141
  216. 3150 DATA254,3,169,1,141,120,3,76,17,3,160,176,173,247,2,16,3,140,68,3,72
  217. 3160 DATA41,15,168,185,33,2,133,45,185,38,2,133,46,185,43,2,141,236,2,185
  218. 3170 DATA48,2,141,237,2,185,53,2,141,58,3,185,58,2,141,63,3,173,17,208,41
  219. 3180 DATA239,141,17,208,169,8,32,177,255,169,111,32,147,255,162,233,189,75
  220. 3190 DATA2,32,168,255,232,208,247,32,174,255,169,0,32,113,168,76,174,167,238
  221. 3200 DATA78,3,165,45,133,174,165,46,133,175,173,17,208,9,16,141,17,208,162
  222. 3210 DATA3,32,85,228,174,237,2,208,5,169,2,141,237,2,104,10,41,32,208,7,138
  223. 3220 DATA240,4,144,110,176,15,176,10,169,75,141,2,3,169,3,141,3,3,32,0,0,32
  224. 3230 DATA119,166,32,215,170,108,0,3,9,14,146,147,31,42,42,42,32,117,76,84
  225. 3240 DATA82,65,66,79,79,84,32,109,69,78,85,69,32,42,42,42,32,32,32,32,109
  226. 3250 DATA65,82,84,73,78,32,112,70,79,83,84,13,32,32,32,32,32,32,40,67,41,32
  227. 3260 DATA49,57,56,54,32,104,69,85,82,69,75,65,32,116,69,65,67,72,87,65,82
  228. 3270 DATA69,13,13,18,48,146,32,102,73,76,69,83,32,65,85,83,83,85,67,72,69
  229. 3280 DATA78,0,13,13,105,72,82,69,32,119,65,72,76,32,58,32,0,31,14,11,34,2
  230. 3290 DATA3,104,8,250,3,78,229,9,168,2,102,126,9,52,3,95,84,3,155,3,7,210,252
  231. 3300 DATA90,3
  232.